package net.cloudcodex.shared.dto.campaign.character;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * A character, may be playable or not.
 * 
 * @author Thomas
 */
public class CharacterDescriptionDTO implements Serializable {

	/**
	 * Id of the character.
	 */
	private long id;

	/**
	 * Id of the character.
	 */
	private long campaignId;
	
	/**
	 * Read timestamp of the description;
	 */
	private Date timestamp;

	/**
	 * Character sheet. A note viewable by owner but only editable by GM.
	 * Of course, null if the current user is not the character's owner.
	 */
	private String sheet;
	
	/**
	 * Notes about this character.
	 * Contains many notes only for GM which can view all of them.
	 */
	private List<CharacterNoteDTO> notes;

	/**
	 * Character's alias, by other character.
	 * Only visible by GM.
	 */
	private Map<Long, String> aliases;
	
	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * @return the campaignId
	 */
	public long getCampaignId() {
		return campaignId;
	}

	/**
	 * @param campaignId the campaignId to set
	 */
	public void setCampaignId(long campaignId) {
		this.campaignId = campaignId;
	}

	/**
	 * @return the timestamp
	 */
	public Date getTimestamp() {
		return timestamp;
	}

	/**
	 * @param timestamp the timestamp to set
	 */
	public void setTimestamp(Date timestamp) {
		this.timestamp = timestamp;
	}

	/**
	 * @return the notes
	 */
	public List<CharacterNoteDTO> getNotes() {
		return notes;
	}

	/**
	 * @param notes the notes to set
	 */
	public void setNotes(List<CharacterNoteDTO> notes) {
		this.notes = notes;
	}

	/**
	 * @return the alias
	 */
	public Map<Long, String> getAliases() {
		return aliases;
	}

	/**
	 * @param aliases the alias to set
	 */
	public void setAliases(Map<Long, String> aliases) {
		this.aliases = aliases;
	}

	/**
	 * @return the sheet
	 */
	public String getSheet() {
		return sheet;
	}

	/**
	 * @param sheet the sheet to set
	 */
	public void setSheet(String sheet) {
		this.sheet = sheet;
	}
}